package com.xiaoshuidi.cloud.module.iot.service;

import com.xiaoshuidi.cloud.module.iot.api.device.vo.AmmeterInfoResModel;
import com.xiaoshuidi.cloud.module.iot.api.device.vo.WaterMeterCommonResponseModel;
import com.xiaoshuidi.cloud.module.iot.controller.admin.doorlock.vo.DeviceGetDailyPowerResModel;
import com.xiaoshuidi.cloud.module.iot.controller.admin.doorlock.vo.OperateThirdDeviceRequestModel;
import com.xiaoshuidi.cloud.module.iot.controller.admin.doorlock.vo.OperateThirdDeviceResponseModel;
import com.xiaoshuidi.cloud.module.iot.controller.admin.doorlock.vo.PullThirdDeviceRequestModel;
import com.xiaoshuidi.cloud.module.iot.dal.model.pass.OperateThirdPassRequestModel;
import com.xiaoshuidi.cloud.module.iot.dal.model.pass.OperateThirdPassResponseModel;
import com.xiaoshuidi.cloud.module.iot.dal.model.pass.PassInfoResModel;
import com.xiaoshuidi.cloud.module.iot.dal.pojo.TbDeviceDo;

import java.util.Collections;
import java.util.List;

/**
 * @author ：baohanzhong
 * @date ：Created 2024/8/17 13:50
 * @description：
 */
public abstract class AllAbstractThirdInstanceService implements ThirdInstanceService{
    /**
     * 第三方设备初始化操作
     * @param thirdDeviceList
     * @param pullThirdDeviceRequestModel
     * @return
     */
    @Override
    public List<TbDeviceDo> initializeDeviceInfo(List<TbDeviceDo> thirdDeviceList, PullThirdDeviceRequestModel pullThirdDeviceRequestModel) {
        return Collections.emptyList();
    }

    @Override
    public OperateThirdDeviceResponseModel addDoorLockPassword(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel getDynamicDoorLockPassword(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    /**
     * 刷新电表默认
     * @param tbDeviceDo
     * @param operateThirdDeviceRequestModel
     * @return
     * @throws Exception
     */
    @Override
    public AmmeterInfoResModel refreshAmmeterInfo(TbDeviceDo tbDeviceDo, OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new AmmeterInfoResModel();
    }

    @Override
    public List<DeviceGetDailyPowerResModel> getDailyPower(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        return Collections.emptyList();
    }

    @Override
    public OperateThirdDeviceResponseModel updateDoorLockPassword(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel frozenDoorLockPassword(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel unfrozenDoorLockPassword(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel switchAmmeterOn(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel switchAmmeterOff(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel deleteDoorLockPassword(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public WaterMeterCommonResponseModel refreshWatermeterInfo(WaterMeterCommonResponseModel waterMeterCommonResponseModel, OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new WaterMeterCommonResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel getDoorLockStatus(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel setAmmeterPrice(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel setAmmeterPayment(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel setWaterMeterPrice(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel setWaterMeterPayment(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel chargeAmmeterFee(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel stayAmmeter(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel recedeAmmeter(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdDeviceResponseModel getOpenLockRecordes(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        OperateThirdDeviceResponseModel operateThirdDeviceResponseModel = new OperateThirdDeviceResponseModel();
        operateThirdDeviceResponseModel.setOperateResult(true);
        return operateThirdDeviceResponseModel;
    }

    @Override
    public OperateThirdPassResponseModel addPassMember(OperateThirdPassRequestModel operateThirdPassRequestModel) {
        return new OperateThirdPassResponseModel();
    }

    @Override
    public OperateThirdPassResponseModel updatePassMember(OperateThirdPassRequestModel operateThirdPassRequestModel) {
        return new OperateThirdPassResponseModel();
    }

    @Override
    public OperateThirdPassResponseModel deletePassMember(OperateThirdPassRequestModel operateThirdPassRequestModel) {
        return new OperateThirdPassResponseModel();
    }

    @Override
    public OperateThirdPassResponseModel getPassMemberGroups(OperateThirdPassRequestModel operateThirdPassRequestModel) {
        return new OperateThirdPassResponseModel();
    }

    @Override
    public PassInfoResModel refreshPassInfo(TbDeviceDo tbDeviceDo, OperateThirdPassRequestModel operateThirdPassRequestModel) {
        return new PassInfoResModel();
    }

    @Override
    public OperateThirdDeviceResponseModel chargeWatermeterFee(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel stayWatermeter(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel recedeWatermeter(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel remoteOpenDoorlock(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel switchColdWaterMeterOff(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel switchHotWaterMeterOff(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel switchHotWaterMeterOn(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new OperateThirdDeviceResponseModel();
    }

    @Override
    public OperateThirdDeviceResponseModel switchColdWaterMeterOn(OperateThirdDeviceRequestModel operateThirdDeviceRequestModel) throws Exception {
        return new OperateThirdDeviceResponseModel();
    }
}
